(function () {
	//添加菜单，弹出弹窗
    jQuery('.addBtn').on('click', function () {
    	jQuery('#id').val('');
        jQuery('#nameNew').val('');
        jQuery('#moduleNameNew').val('');
        jQuery("#groupIdNew").val('');
        jQuery("#iconNew").val('');
        jQuery("#targetNew").val('');
        jQuery("#targetNew").val('');
        jQuery("#menuIndex").val('');
        jQuery('#moduleModal').modal('show');
    });
    //查询
    jQuery('.searchBtn').on('click',function(){
        serverData.key=jQuery('#search').val();
        serverTable.draw();
    })

    //撤销查询
    jQuery('.resetBtn').on("click",function(){
        jQuery('#search').val('');
        serverData.key ='';
        serverTable.draw();
    });
    //table数据显示
    var serverData = {};
    var	serverTable;
    jQuery(document).ready(function () {
        serverTable=  jQuery('#dataTable').DataTable({
            "serverSide": true,
            "ordering": false,
            "ajax": {
                "dataType": "json",
                "type": "post",
                "cache": false,
                "url": window.rootPath+'/ui/module/getpage',
                "data": function (d) {
                    return $.extend({}, d, serverData);
                }
            },
            columns: [{
                data: null,
                defaultContent: ""
            },
                {
                    data: 'name'
                },
                {
                    data: 'moduleName'
                },
                {
                    data:'groupId'
                },
                {
                    data:'icon'
                },
                {
                    data:'target'
                },
                {
                    data:'menuIndex'
                },
                {
                    data:'menuLevel'
                },
                {
                    data:null,
                    defaultContent: "",
                    render: function(data, type, full, meta){
                        var operate ='<button type="button" class="btn btn-sm btn-info editBtn" title="编辑"><i class="fa fa-pencil"></i></button>'
                            +'<button type="button" class="btn btn-sm btn-info delBtn" title="删除"><i class="fa fa-remove"></i></button>'
                            +'<button type="button" class="btn btn-sm btn-info addNode" title="绑定"><i class="fa fa-sign-in"></i></button>';

                        return operate;

                    }
                }],
            "drawCallback": function ( oSettings ) {
                var k = 0;
                var total = oSettings.aiDisplay.length + oSettings._iDisplayStart;

                for ( var i=oSettings._iDisplayStart, iLen=total ; i<iLen ; i++ )
                {
                    $('td:eq(0)', oSettings.aoData[ oSettings.aiDisplay[k] ].nTr ).text( i+1 );
                    k++;
                }

                serverTable.off('click','tr');
                serverTable.on( 'click', 'tr', function (event) {
                    event=event||window.event;
                    var target=event.target||event.scrElement;
                    var data = serverTable.row( this ).data();

                    if(target.className.indexOf('fa-remove')!=-1 || target.className.indexOf('delBtn')!=-1){

                        deleteModule(data);
                    }

                    if(target.className.indexOf('fa-pencil')!=-1||target.className.indexOf('editBtn')!=-1){

                        editModule(data);
                    }
                    if(target.className.indexOf('fa-sign-in')!=-1||target.className.indexOf('addNode')!=-1){

                        setNode(data,data.moduleName);
                    }
                    return;
                } );
            }
        });
        var deleteModule=function(data){
            if(!data) return;
            $.springLemonDialog({
                content:'确认模块：'+data.moduleName+'？',//确认文本
                clickButton:function(sender,modal,index){//按钮事件处理
                    //index:0 确认    1：取消
                    //sender:事件源 如按钮，sender.html()可得到按钮文字如：取消
                    if(index==0){
                        var url=window.rootPath+"/api/modules/"+data.id;
                        jQuery.ajax({
                            url:encodeURI(url),
                            cache:false,
                            type : "delete",
                            dataType:"json",
                            success:function(data){
                                serverTable.draw(false);
                            }
                        });
                    }
                    $(this).closeDialog(modal);
                }

            });

        };
        var editModule=function(data){
            if(!data) return;
            jQuery('#id').val(data.id);
            jQuery('#nameNew').val(data.name);
            jQuery('#moduleNameNew').val(data.moduleName);
            jQuery('#groupIdNew').val(data.groupId);
            jQuery('#iconNew').val(data.icon);
            jQuery('#targetNew').val(data.target);
            jQuery('#menuIndex').val(data.menuIndex);
            jQuery('#menuLevel').val(data.menuLevel);
            jQuery('#moduleModal').modal('show');
        };
        jQuery('.searchBtn').on('click',function(){
            serverData.key=jQuery('#search').val();
            serverTable.draw();
        })
        //撤销查询
        jQuery('.resetBtn').on("click",function()
        {
            jQuery('#search').val('');
            serverData.key ='';
            serverTable.draw();
        });
        //新增，编辑保存
        jQuery('.saveBtn').on('click',function(){
            if(jQuery("#moduleEditForm") && !jQuery("#moduleEditForm").Validform({tiptype:3, showAllError:true}).check(false)){
                return;
            };
            id=jQuery('#id').val();
            if(!id==0){
                var data={
                    id:jQuery('#id').val(),
                    name:jQuery('#nameNew').val(),
                    moduleName:jQuery('#moduleNameNew').val(),
                    groupId:jQuery('#groupIdNew').val(),
                    icon:jQuery('#iconNew').val(),
                    target:jQuery('#targetNew').val(),
                    menuId:"2",
                    menuIndex:jQuery('#menuIndex').val(),
                    menuLevel:jQuery('#menuLevel').val()
                };
                var url=window.rootPath+'/api/modules/'+data.id;
                jQuery.ajax({
                    url:encodeURI(url),
                    type:'put',
                    data:JSON.stringify(data),
                    dataType:'json',
                    contentType:'application/json;charset=utf-8',
                    success: function () {
                        jQuery('#moduleModal').modal('hide');
                        serverTable.draw(false);
                    }
                });
            }
            else
            {
                var url = window.rootPath + "/api/modules";
                var d = {
                    "name": jQuery('#nameNew').val(),
                    "moduleName": jQuery('#moduleNameNew').val(),
                    "groupId": jQuery('#groupIdNew').val(),
                    "icon": jQuery('#iconNew').val(),
                    "target": jQuery('#targetNew').val(),
                    "menuId":"2",
                    "menuIndex":jQuery('#menuIndex').val(),
                    "menuLevel":jQuery('#menuLevel').val()
                };

                jQuery.ajax({
                    type: 'post',
                    url: url,
                    data: JSON.stringify(d),
                    dataType: 'json',
                    contentType: 'application/json;charset=utf-8',
                    success: function (data) {
                        jQuery('#moduleModal').modal('hide');
                        serverTable.draw(false);
                        jQuery('#nameNew').val('');
                        jQuery('#moduleNameNew').val('');
                        jQuery("#groupIdNew").val('');
                        jQuery("#iconNew").val('');
                        jQuery("#targetNew").val('');
                    }
                });
            }
        });

    });

    ////////////////初始化模型的树结构/////////////////////////
    var modalSetting = {
        edit:{
            enable: true,
            showRemoveBtn:setRemoveBtn,
            showRenameBtn:false
        },
        data: {
            simpleData: {
                enable: true,
                idKey: "id",
                pIdKey: "parentId",
                rootParentId: 0
            }
        },
        view:{
            showLine:true
        },
        check: {
			enable: true,
			chkStyle: "radio",
			radioType: "level"
		},
        callback:{
            beforeRemove: beforeRemove,
            onRemove:onRemove,
            onCheck:editNewModule
        }

    };
    
    //菜单树点击编辑节点
    function editNewModule(e, treeId, treeNode){
    	var moduleId=treeNode.id;
        var url=window.rootPath +'/ui/module/getNode'+'?moduleId='+moduleId;
        jQuery.ajax({
            url:url,
            cache:false,
            type :"get",
            dataType:"json",
            contentType:'application/json;charset=utf-8',//解决返回数据中的中文乱码问题
            success:function(data){
            	jQuery('#id1').val(data.node.id);
                jQuery('#nameNew1').val(data.node.name);
                jQuery('#moduleNameNew1').val(data.node.moduleName);
                jQuery('#groupIdNew1').val(data.node.groupId);
                jQuery('#iconNew1').val(data.node.icon);
                jQuery('#targetNew1').val(data.node.target);
                jQuery('#menuIndex1').val(data.node.menuIndex);
                jQuery('#menuLevel1').val(data.node.menuLevel);
                jQuery('#moduleModal1').modal('show');   
            }
        });	
    }
    
    
    //删除按钮的设置
    function setRemoveBtn(treeId, treeNode) {
        //判断为顶级节点则不显示删除按钮
        if(treeNode.level == 0)
            return false;
        else
            return true;

    }
    var menuId="1";
    var primaryNode=[];
    var url = window.rootPath +'/ui/module/getAllNodes';
    jQuery.ajax({
        url:url,
        cache:false,
        type :"get",
        data:{
            "menuId":menuId
        },
        dataType:"json",
        contentType:'application/json;charset=utf-8',//解决返回数据中的中文乱码问题
        success:function(data){
                primaryNode.push(
                    {
                        id: 1,
                        name: "模型树",
                        open: "true"
                        // iconSkin:"diy03"
                    }
                );
                for (var i = 0; i < data.nodes.length; i++) {
                    primaryNode.push(data.nodes[i]);
                }
            $.fn.zTree.init($("#moduleTree"),modalSetting,primaryNode);
        }
    });
    //////////////////删除节点/////////////////////////////
    function beforeRemove(treeId, treeNode) {
        return confirm("确认删除 " + treeNode.name + "节点 吗？");
    }
    function onRemove(e, treeId, treeNode) {
        //此处treeNode 为当前节点,
        var str ='' ;
        var selectPId=treeNode.getParentNode().id;
        var url=window.rootPath+'/ui/module/deleteNodes';
        str=treeNode.id;
        str = getAllChildrenNodes(treeNode,str);//获得所有id的字符串，方法在myTree.js
        jQuery.ajax({
            url:encodeURI(url),
            cache:false,
            type :"get",
            data:{
                "str":str,
                "selectPId":selectPId
            },
            dataType:"json",
            contentType:"application/json;charset=utf-8",//解决返回数据中的中文乱码问题
            success:function(data){
                serverTable.draw(false);
            }
        });
    }

    ////////////////添加节点///////////////////////////////
    function setNode(data,moduleName){
        var treeObj= $.fn.zTree.getZTreeObj("moduleTree");
        var selectNodes=treeObj.getSelectedNodes(treeObj);
        var selectNode=selectNodes[0];
        var moduleName=moduleName;
        if(selectNode){
            $.springLemonDialog({
                title:'系统提示',//标题   默认为   系统提示
                content:'是否要绑定'+moduleName+'节点？',//确认文本
                bootstrapModalOption:{keyboard: true},
                clickButton:function(sender,modal,index){//按钮事件处理
                    //index:0 确认    1：取消
                    //sender:事件源 如按钮，sender.html()可得到按钮文字如：取消
                    if(index==0){
                        var url=window.rootPath+'/ui/module/saveNode';
                        jQuery.ajax({
                            url:encodeURI(url),
                            cache:false,
                            type :"get",
                            data:{
                                "parentId":selectNode.id,
                                "menuId":1,
                                "id":data.id
                            },
                            dataType:"json",
                            contentType:"application/json;charset=utf-8",//解决返回数据中的中文乱码问题
                            success:function(data){
                                if(data.code==1){
                                    var newNode={
                                        "id": data.nodeId,
                                        "parentId":selectNode.id,
                                        "name":moduleName
                                        //   iconSkin:"diy05"

                                    }
                                    selectNode=treeObj.addNodes(selectNode,newNode);
                                    serverTable.draw(false);
                                }
                            }
                        });
                    }
                    $(this).closeDialog(modal);
                }
            });
        }
        else{
            $.springLemonDialog({
                title:'系统提示',//标题   默认为   系统提示
                content:'请选择一个节点',//确认文本
                bootstrapModalOption:{keyboard: true},
                clickButton:function(sender,modal,index){//按钮事件处理
                    //index:0 确认    1：取消
                    //sender:事件源 如按钮，sender.html()可得到按钮文字如：取消
                    $(this).closeDialog(modal);
                }

            });
        }
    }

})();